package com.xz.knowledgeDuplication.pattern.framework.beans.factory;

/**
 * IOC容器父接口(延迟加载)
 *
 * @author 召
 * @date 2022-04-11 21:43:19
 */
public interface BeanFactory {

    /**
     * 根据名称获取bean
     *
     * @param name 名称
     * @return bean对象
     * @throws Exception Exception
     */
    Object getBean(String name) throws Exception;

    /**
     * 根据名称和字节码对象获取bean
     *
     * @param name 名称
     * @param clazz 字节码对象
     * @param <T> 泛型
     * @return bean对象
     * @throws Exception Exception
     */
    <T> T getBean(String name, Class<? extends T> clazz)  throws Exception;
}
